# 查询
# 数据库
from pymysql import Connection
from pymysql.cursors import DictCursor
conn = None
cursor = None
# 连接数据库
def conn_mysql():
    # 获取mysql数据库连接
    conn = Connection(
        host="192.168.215.210",  # 主机名（IP地址）
        port=3306,  # 端口
        user='root',  # 用户名
        password='123456',  # 密码
        charset="utf8",  # 编码
        # database="test" # 默认连接的数据表
    )
    # 获取游标
    # cursor = conn.cursor()
    # 让查询后返回的数据由元祖转换为字典
    cursor = conn.cursor(cursor=DictCursor)
    return conn, cursor
# 获取数据库版本
def get_server_info():
    global conn
    # 打印查询mysql的版本
    return conn.get_server_info()
# 查看所有数据库
def get_mysql_all():
    global cursor
    # 查看所有数据表
    cursor.execute("show databases")
    # 获取返回值(获取的是元组,元组里面嵌套元组)
    results = cursor.fetchall()
    print(results)
# 查看数据表
def get_table_all():
    global cursor
    # database="test" # 默认连接的数据表 如果在创建连接时选择了数据表就不需要再选择
    # 选择数据表
    conn.select_db("test")
    # 查看所有数据表
    cursor.execute("show tables")
    # 获取返回值(获取的是元组,元组里面嵌套元组)
    results = cursor.fetchall()
    print(results)
# 给出一条数据
def get_one():
    # database="test" # 默认连接的数据表 如果在创建连接时选择了数据表就不需要再选择
    # 选择数据库
    conn.select_db("test")
    # 使用游标对象执行sql语句
    cursor.execute("select * from student")
    # 获取返回值(获取的是元组,元组里面嵌套元组)
    result = cursor.fetchone()
    print(result)
# 查询所有数据
def get_all():
    # database="test" # 默认连接的数据表 如果在创建连接时选择了数据表就不需要再选择
    # 选择数据库
    conn.select_db("test")
    # 使用游标对象执行sql语句
    cursor.execute("select * from student")
    # 获取返回值(获取的是元组,元组里面嵌套元组)
    results = cursor.fetchall()
    for r in results:
        print(r)
# 关闭连接
def conn_close():
    global conn
    conn.close()
# 主程序
if __name__ == '__main__':
    try:
        # 获取连接和游标
        conn, cursor = conn_mysql()
        if conn and cursor:
            print("数据库连接正常")
            get_all()
    except:
        print("数据库关闭异常")
    finally:
        print("数据库关闭")
        conn_close()



